},
addSettingsAction: function(title, desktopFile) {
- // Don't allow user settings to get edited unless we're in a user session
- if (Main.sessionMode.sessionType != Shell.SessionType.USER)
+ if (!Main.sessionMode.allowSettings)
return null;
let menuItem = this.addAction(title, function() {
'gdm': { hasOverview: false,
hasAppMenu: false,
showCalendarEvents: false,
+ allowSettings: false,
sessionType: Shell.SessionType.GDM },
'user': { hasOverview: true,
hasAppMenu: true,
showCalendarEvents: true,
+ allowSettings: true,
sessionType: Shell.SessionType.USER }
};
this._syncConfig();
- if (Main.sessionMode.sessionType == Shell.SessionType.USER) {
+ // re-using "allowSettings" for the keyboard layout is a bit shady,
+ // but at least for now it is used as "allow popping up windows
+ // from shell menus"; we can always add a separate sessionMode
+ // option if need arises.
+ if (Main.sessionMode.allowSettings) {
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addAction(_("Show Keyboard Layout"), Lang.bind(this, function() {
Main.overview.hide();
let item;
item = new IMStatusChooserItem();
- item.connect('activate', Lang.bind(this, this._onMyAccountActivate));
+ if (Main.sessionMode.allowSettings)
+ item.connect('activate', Lang.bind(this, this._onMyAccountActivate));
this.menu.addMenuItem(item);
this._statusChooser = item;
item = new PopupMenu.PopupSeparatorMenuItem();
this.menu.addMenuItem(item);
- item = new PopupMenu.PopupMenuItem(_("System Settings"));
- item.connect('activate', Lang.bind(this, this._onPreferencesActivate));
- this.menu.addMenuItem(item);
+ if (Main.sessionMode.allowSettings) {
+ item = new PopupMenu.PopupMenuItem(_("System Settings"));
+ item.connect('activate', Lang.bind(this, this._onPreferencesActivate));
+ this.menu.addMenuItem(item);
+ }
item = new PopupMenu.PopupAlternatingMenuItem(_("Power Off"),
_("Suspend"));